// 给定一个长度为n的数组nums，nums包含[0, n]中的n个数，要求找出[0, n]范围内没有出现在数组中的那个数, nums中的数字是唯一的

// 思路1，哈希表
function missingNumber(nums) {
    let set = new Set(nums)
    for (let i = 0; i < nums.length + 1; i++) {
        if (!set.has(i)) {
            return i
        }        
    }
}

// 思路2，数学运算

function missingNumber2(nums) {
    let n = nums.length
    let total = Math.floor(n * (n + 1) / 2)
    let sum = 0
    for (let i = 0; i < nums.length; i++) {
        sum += nums[i]        
    }
    return total - sum
}

// 思路3，排序
function missingNumber3(nums) {
    nums.sort((a, b) => a - b)
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== i) {
            return i
        }        
    }
    return nums.length
}